using OracleInternal.Json.Sql;

namespace OracleInternal.Json.Binary
{
	internal abstract class OsonValueFactory
	{
		internal abstract OsonAbstractArray CreateArray(OsonContext ctx, int pos);

		internal abstract OsonAbstractObject CreateObject(OsonContext ctx, int pos);

		internal abstract object CreateString(OsonContext ctx, int pos, int len);

		internal abstract OracleJsonNumber CreateNumber(byte[] raw, TargetType type);

		internal abstract OracleJsonNumber CreateStringNumber(string value);

		internal abstract OracleJsonNumber CreateDouble(double value);

		internal abstract object CreateBinary(byte[] values, bool isId);

		internal abstract object CreateTimestamp(byte[] raw);

		internal abstract object CreateTimestampTZ(byte[] raw);

		internal abstract OracleJsonNumber CreateFloat(float flt);

		internal abstract object CreateDate(byte[] raw);

		internal abstract object CreateIntervalYM(byte[] raw);

		internal abstract object CreateIntervalDS(byte[] raw);

		internal abstract object CreateTrue();

		internal abstract object CreateFalse();

		internal abstract object CreateNull();
	}
}
